맨위로가기

AKS 소수판별법

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

AKS 소수판별법은 모든 자연수에 대해 소수 여부를 판별할 수 있는 최초의 소수 판별 알고리즘이다. 일반성, 다항 시간, 결정성, 무조건성을 모두 만족하며, 페르마 소정리를 다항식으로 일반화한 정리에 기반한다. 알고리즘은 완전 제곱수 확인, r 값 찾기, 최대공약수 확인, 작은 수에 대한 소수 판별, 다항식 합동식 확인, 소수 판별의 6단계로 구성된다. 발표 당시 시간 복잡도는 Õ(log(n)12)이었으나, 이후 개선을 통해 현재는 Õ(log(n)7.5)까지 향상되었으며, Õ(log(n)6)까지 개선될 가능성도 제기되고 있다.

더 읽어볼만한 페이지

  • 소수 판별법 - 에라토스테네스의 체
    에라토스테네스의 체는 주어진 범위에서 소수를 효율적으로 찾는 알고리즘으로, 특정 구간 내의 모든 수를 나열한 후 가장 작은 소수의 배수들을 제거하는 과정을 반복하여 소수만을 남기는 방식으로 작동하며, 다양한 변형과 최적화 기법이 존재하고, O(n \log \log n)의 시간 복잡도를 가진다.
  • 소수 판별법 - 밀러-라빈 소수판별법
    밀러-라빈 소수판별법은 페르마 소정리를 기반으로 주어진 수가 소수인지 판별하는 확률적 알고리즘으로, 합성수를 소수로 잘못 판별할 가능성이 있지만 검사를 반복할수록 정확도가 높아지며, 일반화 리만 가설이 참일 경우 결정론적 알고리즘으로 전환될 수 있다.
  • 유한체 - 이산 로그
    이산 로그는 유한군에서 이산 거듭제곱의 지수를 찾는 역함수로, 소수 p를 법으로 하는 정수 모듈러 곱셈 그룹에서 계산적으로 풀기 어려운 문제이며, 현대 암호 시스템의 안전성 기반이지만 양자 알고리즘으로 효율적 해결이 가능하여 양자 내성 암호 연구가 필요하다.
  • 유한체 - 순환 중복 검사
    순환 중복 검사(CRC)는 데이터 전송 또는 저장 시 오류 검출을 위해 데이터를 다항식으로 간주하고 생성 다항식으로 나눈 나머지를 검사 값으로 사용하여 오류를 감지하는 기술이다.
AKS 소수판별법
알고리즘 정보
이름AKS 소수판별법
고안자마닌드라 아가르왈
니라지 카얄
나이틴 사세나
발표 연도2002년
분야소수 판별법
복잡도 종류다항 시간
최악 시간 복잡도O(log(n)^6)
증명페르마의 소정리
중요성최초의 일반적인, 다항 시간, 결정론적, 그리고 조건 없는 소수 판별 알고리즘

2. 중요성

AKS 소수판별법은 소수 판별 알고리즘 역사상 중요한 의미를 지닌다. 이 알고리즘은 '''일반성''', '''다항 시간''', '''결정성''', '''무조건성'''이라는 네 가지 중요한 기준을 모두 만족하는 최초의 알고리즘이기 때문이다. 이전까지 개발된 알고리즘들은 이 네 가지 기준 중 일부만을 만족하는 한계를 가지고 있었다.


  • '''일반성''': AKS 알고리즘은 특정 형태의 수에 국한되지 않고 ''모든'' 자연수소수인지 합성수인지를 판별할 수 있다. 이는 메르센 소수만 판별 가능한 루카스-레머 소수판별법이나 페르마 수만 판별 가능한 페팽 소수판별법 등 특정 수에만 적용되던 기존 알고리즘들과 구별된다.
  • '''다항 시간''': AKS 알고리즘은 입력된 숫자의 자릿수에 대해 다항 시간 안에 실행이 완료됨이 수학적으로 증명되었다. ECPP이나 APR 같은 다른 결정적 알고리즘들은 모든 입력에 대해 다항 시간 복잡도를 갖는지가 아직 증명되지 않았다.
  • '''결정성''': AKS 알고리즘은 주어진 수가 소수인지 합성수인지를 확률적인 요소 없이 결정적으로 판별한다. 이는 밀러-라빈 소수판별법이나 베일리-PSW 소수판별법과 같이 다항 시간 안에 결과를 내지만, 소수라는 결과가 실제로는 합성수일 작은 확률을 가지는 확률적 알고리즘들과 구별된다.
  • '''무조건성''': AKS 알고리즘의 정확성은 아직 증명되지 않은 다른 수학적 가설에 의존하지 않는다. 예를 들어 밀러 소수판별법은 결정적이고 다항 시간 안에 실행되지만, 그 정확성은 아직 증명되지 않은 일반화 리만 가설이 참이라는 조건 하에서만 보장된다.


이처럼 AKS 소수판별법은 이론적으로 소수 판별 문제를 해결했다는 점에서 큰 의미를 갖는다. 하지만 알고리즘의 실행 속도가 상대적으로 느려 실제적인 계산에서는 베일리-PSW 소수판별법 (작은 수의 경우)이나 ECPP, APR (큰 수의 경우) 등이 더 효율적으로 사용된다. 이 때문에 AKS 알고리즘은 이론적 중요성에도 불구하고 실제 연산에서는 잘 사용되지 않아 은하 알고리즘으로 분류되기도 한다.

3. 개념

AKS 소수판별법은 페르마 소정리를 다항식으로 일반화한 다음 정리에 기반한다.[1]

정수 ''n'' (≥ 2)과 ''n''과 서로소인 임의의 정수 ''a''가 주어졌을 때, ''n''이 소수일 필요충분조건은 다음 합동식이 다항식 환 (\mathbb Z/n\mathbb Z)[X]에서 성립하는 것이다.

:(x + a)^{n} \equiv x^{n} + a \pmod{n} \qquad (1)

여기서 ''x''는 형식적인 변수이다. 이 합동식은 (x+a)^n이항 정리를 이용해 전개했을 때 ''x''의 각 차수에 해당하는 이항 계수 {n \choose k} (단, 0 < k < n)가 모두 ''n''으로 나누어떨어짐을 의미하며, 이는 ''n''이 소수일 때 성립하는 성질이다.[7]

합동식 (1) 자체는 소수판별법으로 사용될 수 있지만, 다항식 (x+a)^n을 직접 전개하여 모든 계수를 확인하는 것은 ''n''의 크기에 대해 지수 시간 복잡도를 가지므로 매우 비효율적이다.

AKS 알고리즘은 계산 시간을 줄이기 위해, 합동식 (1)을 직접 확인하는 대신 적절히 작은 정수 ''r''을 선택하여 몫 다항식 환 (\mathbb Z/n\mathbb Z)[X]/(X^r - 1)에서 다음 합동식을 검사한다.

:(x + a)^{n} \equiv x^{n} + a \pmod{(n, x^{r}-1)} \qquad (2)

이는 다항식 x^r-1로 나눈 나머지에 대해서만 합동 관계를 확인하는 것과 같으며, (x + a)^n - (x^n + a) = nf + (x^r - 1)g를 만족하는 어떤 다항식 ''f''와 ''g''가 존재한다는 의미이다.

만약 ''r''의 크기를 ''n''의 자릿수(즉, \log n)에 대한 다항식 정도로 작게 선택하면, 합동식 (2)를 검증하는 것은 다항 시간 안에 완료될 수 있다. 그러나 법 x^r-1을 추가하면 합동 조건이 약화되어, 합성수임에도 불구하고 이 조건을 만족하는 경우가 생길 수 있다. 따라서 AKS 알고리즘은 이 판별의 정확도를 높이기 위해, 하나의 ''a'' 값이 아닌 충분히 많은 개수의 ''a'' 값에 대해 합동식 (2)가 성립하는지를 확인한다.

결론적으로, 적절한 ''r''과 충분히 많은 ''a'' 값들에 대해 합동식 (2)를 검증함으로써, AKS 알고리즘은 다항 시간 내에 주어진 정수 ''n''이 소수인지 합성수인지를 결정론적으로 판별할 수 있다.[1] 이는 페르마 테스트가 카마이클 수와 같은 특정 합성수를 소수로 잘못 판정하는 문제를 해결한 개선된 방법으로 볼 수 있다.

4. 알고리즘

AKS 알고리즘의 개요는 다음과 같다.[1]

입력으로 1보다 큰 정수 ''n''을 받는다.

# ''n''이 완전 제곱수인지 확인한다: 만약 n=a^b인 정수 ''a'' > 1 와 ''b'' > 1 가 존재하면, ''합성수''를 출력하고 종료한다. 이는 거듭제곱수 판정으로, 제5단계 판정법이 거듭제곱수에는 제대로 작동하지 않기 때문에 필요하다.

# o_{r}(n) > (\log_{2} n)^{2} (또는 일부 변형에서는 4(\log n)^2)을 만족하는 가장 작은 ''r''을 찾는다. 여기서 o_{r}(n)은 ''r''을 법으로 한 ''n''의 곱셈 위수, 즉 n^{k} \equiv 1 \pmod{r}을 만족하는 가장 작은 양의 정수 ''k''이다. \log_2이진 로그 함수이다. 이러한 ''r''은 r \leq \lceil 16(\log n)^5 \rceil 범위 안에 존재함이 증명되어 있다. 만약 ''r''과 ''n''이 서로소가 아니면(즉, 최대공약수가 1보다 크면), ''n''의 비자명한 약수를 찾은 것이므로 ''합성수''를 출력하고 종료한다. 이는 제5단계가 올바르게 동작하기 위해 n(\mathbb{Z}/r\mathbb{Z})^\times이어야 하기 때문이다.

# 모든 2 ≤ ''a'' ≤ min(''r'', ''n''−1)에 대해 ''a''가 ''n''을 나누는지 확인한다 (또는, 어떤 ''a'' ≤ ''r''에 대해 1 < (a,n) < n인지 확인한다. 여기서 (a,n)는 ''a''와 ''n''의 최대공약수이다). 만약 이러한 ''a''가 존재하면, ''합성수''를 출력하고 종료한다. 이는 최대 ''r''까지의 시험 나눗셈과 동일하며 효율적으로 수행될 수 있다.

# 만약 ''n'' ≤ ''r''이면 ''소수''를 출력하고 종료한다. 이 경우는 제3단계에서 ''n''이 ''n''-1까지의 모든 수와 서로소임을 확인한 셈이므로 ''n''은 소수이다. 이 단계는 ''n''이 매우 작은 경우(예: 400 이하)에 해당될 수 있으며, 특정 임계값(예: 5690034)보다 큰 ''n''에 대해서는 생략될 수 있다.

# 1부터 \lfloor \sqrt{\varphi(r)}\log_2(n) \rfloor (또는 [2\sqrt{\phi(r)} \log n])까지의 모든 정수 ''a''에 대해 다음 합동식이 성립하는지 검사한다. 여기서 \varphi(r)오일러 피 함수이고, [x]는 가우스 기호이다.

#: (X+a)^{n} \equiv X^{n}+a \pmod{X^{r}-1, n}

#: 만약 이 합동식이 성립하지 않는 ''a''가 하나라도 존재하면, ''합성수''를 출력하고 종료한다. 이 합동식 검사는 다항식 환 (\mathbb Z/n\mathbb Z)[X]/(X^r -1)에서 이루어지며, 계산 복잡도는 ''r''의 크기에 의존한다. 알고리즘의 핵심 연산이며, 대부분의 시간이 이 단계에서 소요된다.

# 위의 모든 단계를 통과하면, ''소수''를 출력하고 종료한다. 제5단계에서 충분히 많은 ''a''에 대해 합동식이 성립한다면 ''n''은 반드시 소수이거나 소수의 거듭제곱인데, 제1단계에서 거듭제곱인 경우는 이미 걸러졌으므로 ''n''은 소수이다.

AKS 소수 판별법은 다음 정리에 기반한다: 정수 n\ge 2n서로소인 정수 a가 주어졌을 때, n이 소수일 필요충분조건은 다항식 환 (\mathbb Z/n\mathbb Z)[X]에서 다음 합동 관계가 성립하는 것이다.[1]

:(X + a)^{n} \equiv X^{n} + a \pmod{n}

이 정리는 페르마의 소정리를 다항식으로 일반화한 것이다. ''n''이 소수일 때 이 관계가 성립함은 이항 정리와, 모든 0에 대해 이항 계수 {n \choose k} \equiv 0 \pmod{n}라는 성질을 이용하여 쉽게 증명할 수 있다. 이 합동 관계 자체만으로도 소수 판별법이 될 수 있지만, 다항식 (X+a)^n을 전개하고 계수를 확인하는 데 지수 시간이 걸린다. AKS 알고리즘은 이 합동식을 (\mathbb Z/n\mathbb Z)[X]/(X^r -1)라는 더 작은 환에서 검사함으로써 다항 시간 안에 소수 판별이 가능하도록 한다. 즉, 다음 합동식을 검사하는 것이다.[1]

:(X + a)^{n} \equiv (X^{n} + a) \pmod{X^{r}-1, n}

알고리즘의 유효성 증명은 위의 조건을 만족하는 적절한 ''r''과 충분히 많은 ''a'' 값들에 대해 합동식이 성립하면 ''n''이 반드시 소수임을 보이는 데 중점을 둔다.[1] 알고리즘 개선 연구는 주로 ''r''의 크기를 줄이고 제5단계의 핵심 연산을 더 빠르게 만드는 데 집중되어 왔다.[5]

5. 알고리즘 해설

AKS 소수 판별법은 주어진 정수 ''n''이 소수인지 합성수인지를 결정하는 알고리즘이다. 이 알고리즘은 페르마의 소정리를 다항식으로 일반화한 다음 정리에 기반한다.

정수 n \ge 2n서로소인 정수 a가 주어졌을 때, 다항식 환 (\mathbb Z/n\mathbb Z)[X] 내에서 다음 합동 관계

(X + a)^{n} \equiv X^{n} + a \pmod{n}

가 성립하는 경우에만 n은 소수이다.[1] 여기서 X는 다항식 환을 생성하는 미지수를 나타낸다.

이 정리는 이항 정리와 소수 n에 대해 0인 모든 k에 대해 이항 계수 {n \choose k} \equiv 0 \pmod{n} 이 성립하는 속성을 이용하여 쉽게 증명할 수 있다. 이 합동 관계 자체는 소수 판별법으로 사용될 수 있지만, (X + a)^n 다항식을 전개하고 n + 1개의 계수를 확인해야 하므로 지수 시간이 걸린다.

AKS 알고리즘은 이 합동 관계를 직접 확인하는 대신, 적절한 정수 r을 찾아 몫환 (\mathbb Z/n\mathbb Z)[X]/(X^r -1)에서 평가함으로써 계산 복잡도다항 시간으로 줄인다. 즉, 다음 합동 관계를 확인한다.[1]

(X + a)^{n} \equiv (X^{n} + a) \pmod{X^{r}-1, n}

이는 어떤 다항식 f, g에 대해 (X + a)^n - (X^n + a) = (X^r - 1)g + nf 와 동치이다. 모든 소수 n은 이 관계를 만족한다 (첫 번째 합동식이 성립하므로 g=0으로 두면 된다). AKS 알고리즘은 이 합동 관계가 충분히 많은 a 값에 대해 성립하는지 확인하여 n의 소수성을 판별한다. 알고리즘의 정확성 증명은 이러한 ra 값 집합을 찾을 수 있으며, 만약 합동 관계가 모두 성립한다면 n은 소수의 거듭제곱이라는 것을 보인다.[1]

알고리즘의 단계는 다음과 같다.[1]

'''입력''': 정수 n > 1

1. 거듭제곱수 판별: n = a^b 인 정수 a > 1b > 1 가 존재하는지 확인한다. 만약 존재하면 "합성수"를 출력하고 종료한다. (거듭제곱수는 소수가 아니므로 미리 제외한다.)

2. r 찾기: o_r(n) > (\log_2 n)^2 를 만족하는 가장 작은 정수 r을 찾는다. 여기서 o_r(n)n의 모듈러 r에 대한 곱셈 위수, 즉 n^k \equiv 1 \pmod{r}을 만족하는 가장 작은 양의 정수 k이다. 이러한 rr \leq \lceil 16(\log_2 n)^5 \rceil 범위 안에 존재함이 알려져 있다.

3. 최대공약수 확인: 모든 2 \le a \le \min(r, n-1) 에 대해 \gcd(a, n)을 계산한다. 만약 1 < \gcd(a, n) < na가 존재하면(즉, an의 비자명한 약수이면) "합성수"를 출력하고 종료한다. (일부 버전에서는 r을 찾는 과정에서 \gcd(n, r) \neq 1 이면 합성수로 판정하기도 한다.)

4. 작은 수 판별: 만약 n \le r 이면 "소수"를 출력하고 종료한다. 이 경우, 3단계에서 n보다 작은 모든 수 a에 대해 \gcd(a, n)=1 임을 확인했으므로 n은 소수이다. (n > 5690034 이면 이 단계는 거의 발생하지 않아 무시될 수 있다.)

5. 다항식 합동식 확인: a = 1 부터 \lfloor \sqrt{\phi(r)}\log_2(n) \rfloor 까지의 모든 정수 a에 대해 다음 합동식이 성립하는지 확인한다. 여기서 \phi오일러 피 함수이고, \lfloor \cdot \rfloor는 바닥 함수이다.

(X+a)^{n} \equiv X^{n}+a \pmod{X^{r}-1, n}

만약 이 합동식을 만족하지 않는 a가 하나라도 존재하면, "합성수"를 출력하고 종료한다. 이 단계는 알고리즘의 핵심이며, 대부분의 계산 시간을 차지한다. 계산은 유한 환 R = (\mathbb Z/n\mathbb Z)[X]/(X^r -1) 에서 수행된다.

6. 소수 판별: 5단계의 모든 a 값에 대해 합동식이 성립하면, "소수"를 출력하고 종료한다.

알고리즘의 정확성은 각 단계의 정당성에 기반한다. 1, 3, 4단계는 n의 약수 존재 여부를 직접 확인하므로 자명하게 정확하다. 5단계에서 합동식이 성립하지 않으면 n이 합성수라는 것 또한 첫 번째 합동식의 성질로부터 유도된다. 증명의 가장 중요한 부분은 6단계, 즉 5단계의 모든 검사를 통과하면 n이 실제로 소수임을 보이는 것이다. 이는 5단계에서 검사하는 다항식들로 생성되는 (\mathbb{Z}/n\mathbb{Z})[x]/(X^r-1) 내 곱셈군의 크기에 대한 상한과 하한을 비교하여, 만약 n이 소수가 아니면서 1단계에서 걸러지지 않았다면(즉, 소수의 거듭제곱이 아니라면) 모순이 발생함을 보이는 방식으로 증명된다.[1]

=== 예시: n = 31 ===

n=31이 소수인지 판별해보자.

1. 31 = a^b 를 만족하는 정수 a>1, b>1는 없다. (\sqrt{31} \approx 5.5, \sqrt[3]{31} \approx 3.1, \sqrt[4]{31} \approx 2.3, \sqrt[5]{31} < 2)

2. o_r(31) > (\log_2 31)^2 \approx (4.95)^2 \approx 24.5 인 최소의 r을 찾는다.


  • r=1: 위수 정의 안됨.
  • r=2: 31 \equiv 1 \pmod{2}, o_2(31)=1.
  • ...
  • r=29: 29는 소수. 31 \equiv 2 \pmod{29}. 31^k \equiv 1 \pmod{29} 인 최소 k를 찾는다. 페르마의 소정리에 의해 k\phi(29)=28의 약수이다. 31^1 \equiv 2, 31^2 \equiv 4, 31^4 \equiv 16, 31^7 \equiv 2^7 = 128 \equiv 12, 31^{14} \equiv 12^2 = 144 \equiv -1 \pmod{29}. 따라서 위수는 28이다. o_{29}(31) = 28 > 24.5 이므로 r=29이다.

3. a=2부터 \min(r, n-1) = \min(29, 30) = 29 까지 \gcd(a, 31)을 확인한다. 31은 소수이므로 모든 a에 대해 \gcd(a, 31)=1 이다.

4. n=31 > r=29 이므로 다음 단계로 넘어간다.

5. a=1 부터 \lfloor \sqrt{\phi(29)}\log_2(31) \rfloor = \lfloor \sqrt{28} \times \log_2(31) \rfloor \approx \lfloor 5.29 \times 4.95 \rfloor = \lfloor 26.2 \rfloor = 26 까지 다음을 확인한다.

(X+a)^{31} \equiv X^{31}+a \pmod{X^{29}-1, 31}

(\mathbb Z/31\mathbb Z)[X]/(X^{29}-1) 에서 계산한다. 이 환에서는 X^{29} \equiv 1 이고, 계수는 \pmod{31} 로 계산한다.

좌변: (X+a)^{31} \equiv X^{31} + a^{31} \pmod{31} (페르마의 소정리, 이항 계수 {31 \choose k}k=0, 31 외에는 31의 배수)

X^{31} = X^{29} \cdot X^2 \equiv 1 \cdot X^2 = X^2 \pmod{X^{29}-1}

따라서 좌변은 X^2 + a^{31} \pmod{X^{29}-1, 31} 이다.

우변: X^{31} + a \equiv X^2 + a \pmod{X^{29}-1, 31} 이다.

따라서 합동식은 X^2 + a^{31} \equiv X^2 + a \pmod{X^{29}-1, 31} 이 되고, 이는 a^{31} \equiv a \pmod{31} 과 동치이다. 이는 페르마의 소정리에 의해 모든 정수 a (특히 a=1, ..., 26)에 대해 성립한다.

6. 모든 a에 대해 합동식이 성립하므로, n=31소수이다.

6. 시간 복잡도

AKS 소수 판별법의 시간 복잡도는 알고리즘이 처음 발표된 이후 여러 개선을 거쳐왔다. 2002년 아그라왈, 카얄, 삭세나가 발표한 원 논문 ''PRIMES is in P''에서는 알고리즘의 시간 복잡도를 \tilde{O}(\log(n)^{12})로 증명했다.[1] 이는 입력값 ''n''의 자릿수에 대해 다항 시간 복잡도이지만, 실제 적용에는 다소 느린 속도였다. (\tilde{O} 표기는 점근 표기법의 하나로, 로그 다항식 인자를 포함한다.)

논문 발표 이후 헨드릭 렌스트라, 칼 포머란스, 페드로 베리즈베이티아(Pedro Berrizbeitia), 청치카이(Qizhi Cheng), 대니얼 번스타인 등 여러 수학자들의 후속 연구를 통해 알고리즘은 꾸준히 개선되었다. 이러한 개선은 주로 알고리즘의 핵심 매개변수 ''r''의 상한을 더 효율적으로 추정하고, 원분 다항식 및 유한체 이론 등을 활용하여 이루어졌다.

이러한 연구 결과들을 반영하여 업데이트된 논문에서는 시간 복잡도 상한이 \tilde{O}(\log(n)^{10.5})로 개선되었고, 이후 체 이론의 결과를 추가로 적용하여 현재는 \tilde{O}(\log(n)^{7.5})임이 엄밀하게 증명되었다.

2005년 포머란스와 렌스트라는 \tilde{O}(\log(n)^{6}) 연산으로 실행되는 변형 알고리즘을 시연했으며,[3][4] 이것이 AKS 알고리즘의 실제적인 시간 복잡도일 것으로 널리 추정된다.

더 나아가, 아직 증명되지 않은 특정 수학적 가설들이 참이라면 시간 복잡도는 더욱 개선될 여지가 있다. 예를 들어, 아르틴 추측이나 소피 제르맹 소수의 밀도에 관한 추측이 참이라면, 시간 복잡도는 \tilde{O}(\log(n)^6) 또는 그 이하로 줄어들 수 있다. 아그라왈, 카얄, 삭세나는 Agrawal의 추측이 참일 경우 \tilde{O}(\log(n)^3) 복잡도를 갖는 변형을 제안하기도 했으나, 이 추측은 참이 아닐 가능성이 높다고 여겨진다.

6. 1. 각 단계별 시간 복잡도

AKS 소수 판별법의 전체 시간 복잡도는 초기에 \tilde{O}(\log(n)^{12})로 제시되었으나, 이후 개선을 통해 현재는 \tilde{O}(\log(n)^{7.5})임이 증명되었다. 실제로는 \tilde{O}(\log(n)^6)일 것으로 추정된다. 초보적인 대수학 지식만으로도 \tilde{O}(\log(n)^{10.5})임을 보일 수 있다.

여기서 사용된 \tilde{O} 표기는 란다우 표기법 ''O''를 약간 완화한 것으로, 다음과 같이 정의된다.

:f(x) = \tilde{O}(g(x)) \Leftrightarrow f(x) = O(g(x)\cdot \mathrm{Poly}(\log g(x)))

이는 f(x)g(x)에 log-polynomial factor|로그 다항식 인자eng를 곱한 것보다 점근적으로 작거나 같다는 의미이다. f(x) = \tilde{O}(g(x))이면, 임의의 \epsilon > 0에 대해 f(x) = O\left(g(x)^{1+\epsilon}\right)가 성립한다.

알고리즘의 각 단계별 시간 복잡도는 다음과 같다.

각 단계별 시간 복잡도 분석
단계내용사용 알고리즘/방법시간 복잡도
1단계n이 완전 거듭제곱수인지 판별p진 뉴턴 방법\tilde{O}(\log(n)^3)
2단계특정 조건을 만족하는 가장 작은 r 찾기반복 검사 (r의 상한: \lceil 16\log(n)^5\rceil)\tilde{O}(\log(n)^7)
3단계ar인 모든 a에 대해 gcd(a, n) = 1 확인유클리드 호제법 반복\tilde{O}(\log(n)^6)
4단계nr인 경우 소수 판별단순 비교O(\log n)
5단계다항식 합동식 (X+a)^n \equiv X^n+a \pmod{X^r-1, n} 확인고속 푸리에 변환 기반 다항식 거듭제곱\tilde{O}(r\sqrt{\phi(r)} \log(n)^3) = \tilde{O}(\log(n)^{10.5})
6단계최종 소수 판별결과 확인상수 시간



각 단계의 계산 시간을 분석하면 다음과 같다.

# '''1단계 (완전 거듭제곱수 판별):''' p진 뉴턴 방법을 사용하여 각 자연수 ''b''에 대해 \sqrt[b]{n}\tilde{O}(\log(n)^2) 시간에 계산할 수 있다. ''n'' = ''a''''b'' 형태에서 ''b''의 상한은 \log_2 n이므로, 이 단계는 총 \tilde{O}(\log(n)^3) 시간에 완료된다.

# '''2단계 (r 찾기):''' 알고리즘은 ''r'' ≤ \lceil 16\log(n)^5\rceil인 ''r''을 찾는다. 이 과정은 \tilde{O}(\log(n)^7) 시간에 수행될 수 있다.

# '''3단계 (최대공약수 확인):''' 유클리드 호제법을 사용하면 하나의 최대공약수\tilde{O}(\log(n)) 시간에 계산할 수 있다. 이를 최대 ''r''번 (즉, O(\log(n)^5)번) 반복하므로, 이 단계는 \tilde{O}(\log(n)^6) 시간이 걸린다.

# '''4단계 (작은 수에 대한 소수 판별):''' ''n''이 ''r''보다 작거나 같은지 단순히 비교만 하므로 O(\log n) 시간이 걸린다.

# '''5단계 (다항식 합동식 확인):''' \pmod{X^r-1, n} 연산에서 다항식의 차수는 최대 ''r''-1이고 계수는 최대 ''n''-1이다. 고속 푸리에 변환을 이용하면 다항식의 거듭제곱\tilde{O}(r \log(n)^2) 시간에 계산할 수 있다. 이 확인 과정을 \sqrt{\phi(r)} \log n회 반복해야 하므로, 총 시간 복잡도는 \tilde{O}(r\sqrt{\phi(r)} \log(n)^3)이다. ''r''의 상한을 대입하면 \tilde{O}(\log(n)^{10.5})가 된다.

# '''6단계 (소수 판별):''' 이전 단계들의 결과에 따라 ''n''이 소수인지 합성수인지를 결정하는 단계로, 상수 시간이 소요된다.

따라서, 기본적인 대수학 지식만 사용했을 때 AKS 알고리즘의 전체 시간 복잡도는 가장 시간이 많이 소요되는 5단계에 의해 \tilde{O}(\log(n)^{10.5})로 결정된다.

알고리즘의 전체 시간 복잡도는 ''r''의 크기에 크게 의존한다. 만약 ''r''의 상한을 더 줄일 수 있다면 전체 시간 복잡도를 개선할 수 있다.


  • 체 이론(Sieve theory)의 결과를 이용하면 ''r'' = O(\log(n)^3)임을 보일 수 있으며, 이를 통해 전체 시간 복잡도는 \tilde{O}(\log(n)^{7.5})로 개선된다.


더 나아가, 아직 증명되지 않은 몇 가지 가설을 가정하면 ''r''의 크기를 더 줄일 수 있다.

  • 아르틴 추측이 참이라면, ''r'' = O(\log(n)^2)이다.
  • 소피 제르맹 소수의 밀도에 관한 추측이 참이라면, ''r'' = \tilde{O}(\log(n)^2)이다.


이러한 가설들은 리만 가설이 참이라면 증명될 수 있다. 많은 수학자들이 리만 가설이 참일 것으로 믿고 있기 때문에, AKS 소수 판별법의 실제 시간 복잡도는 \tilde{O}(\log(n)^6)일 가능성이 높다고 여겨진다.

7. 역사

AKS 소수 판별법은 2002년 8월 6일, 인도 칸푸르 공과대학교의 마닌드라 아그라왈(Manindra Agrawal), 니라지 카얄(Neeraj Kayal), 니틴 삭세나(Nitin Saxena)가 발표한 논문 "PRIMES is in P"를 통해 세상에 알려졌다.[1][2] 이 알고리즘은 역사상 처음으로 '일반적'(general), '다항 시간(polynomial time)', '결정적(deterministic)', '무조건적'(unconditional)이라는 네 가지 중요한 속성을 동시에 만족시킨 소수 판별법으로 평가받는다. 이전의 알고리즘들은 오랜 시간에 걸쳐 개발되었지만, 이 네 가지 조건을 모두 충족시키지는 못했다.


  • 일반성: AKS 알고리즘은 주어진 어떤 수에 대해서도 소수인지 판별할 수 있다. 이는 특정 종류의 수에만 적용 가능한 루카스-레머 소수 판별법(Lucas–Lehmer test, 메르센 소수 대상)이나 페핀의 검사(Pépin's test, 페르마 수 대상) 등과 차별화되는 점이다.
  • 다항 시간: 알고리즘 실행 시간이 입력된 숫자의 자릿수에 대한 다항식으로 표현될 수 있다. 타원 곡선 소수 증명(ECPP)이나 애들먼-포머란스-루멜리 소수 판별법(APR) 같은 결정적 알고리즘도 존재하지만, 모든 입력에 대해 다항 시간 복잡도를 가지는지는 증명되지 않았다.
  • 결정성: AKS 알고리즘은 주어진 수가 소수인지 합성수인지를 확률적인 요소 없이 결정적으로 판별한다. 이는 밀러-라빈 소수 판별법(Miller–Rabin)이나 베일리-PSW 소수 판별법(Baillie–PSW)과 같은 확률적 알고리즘과 구별된다. 확률적 알고리즘들은 빠른 시간 안에 결과를 내지만, 오류 가능성을 완전히 배제할 수는 없다.
  • 무조건성: 알고리즘의 정확성이 아직 증명되지 않은 다른 수학적 가설에 의존하지 않는다. 예를 들어, 밀러 검사는 결정적이고 다항 시간 안에 실행되지만, 그 정확성은 일반화된 리만 가설이 참이라는 가정 하에서만 보장된다.


AKS 알고리즘은 발표 직후 이론 컴퓨터 과학 및 수학계에서 큰 주목을 받았다. 초기 논문에서 저자들은 알고리즘의 시간 복잡도를 \tilde{O}(\log(n)^{12})로 제시했다. 이는 입력값 ''n''의 자릿수의 12제곱에 비례하는 시간에 로그 항이 곱해진 형태를 의미한다(점근 표기법의 소프트-O 표기법 사용). 다만, 이는 다소 여유 있는 상한이었고, 만약 소피 제르맹 소수 분포에 대한 널리 받아들여지는 추측이 사실이라면 시간 복잡도는 \tilde{O}(\log(n)^6)으로 즉시 개선될 수 있었다.

발견 이후 몇 달 동안 헨드릭 렌스트라(Hendrik Lenstra, 2002), 칼 포머란스(Carl Pomerance, 2002), 베리즈베이티아(Berrizbeitia, 2002), 쳉(Cheng, 2003), 대니얼 번스타인(Daniel Bernstein, 2003a/b), 렌스트라와 포머란스(Lenstra and Pomerance, 2003) 등에 의해 계산 속도를 크게 향상시키는 여러 변형 알고리즘들이 제안되었다. 이러한 다양한 변형들의 등장으로 크랜들(Crandall)과 파파도풀로스(Papadopoulos)는 2003년 논문에서 이들을 통칭하여 "AKS-class" 알고리즘이라고 부르기도 했다.

이러한 후속 연구와 피드백을 반영하여 아그라왈, 카얄, 삭세나는 "PRIMES is in P" 논문을 수정하여 발표했다. 이 개정판은 후에 저명한 수학 저널인 ''수학 연보''(Annals of Mathematics)에 게재되었다. 기본적인 아이디어는 유지되었지만, 알고리즘의 핵심 파라미터인 ''r''을 선택하는 방식이 개선되었고, 정확성 증명은 원분 다항식의 유한체에서의 성질을 이용하여 더욱 간결하게 재구성되었다. 이 업데이트된 버전에서 시간 복잡도는 \tilde{O}(\log(n)^{10.5})로 개선되었고, 이후 체 이론의 추가적인 결과를 활용하여 \tilde{O}(\log(n)^{7.5})까지 줄어들었다.

2005년에는 포머란스와 렌스트라가 시간 복잡도를 \tilde{O}(\log(n)^{6})으로 더욱 개선한 변형 알고리즘을 발표했다.[3][4] 이는 현재까지 알려진 AKS 기반 알고리즘 중 가장 효율적인 버전 중 하나이다. 아그라왈, 카얄, 삭세나는 Agrawal의 추측이 참일 경우 시간 복잡도가 \tilde{O}(\log(n)^{3})까지 개선될 수 있는 변형을 제안하기도 했지만, 포머란스와 렌스트라의 휴리스틱 분석에 따르면 이 추측은 아마도 거짓일 것으로 여겨진다.

AKS 알고리즘은 소수 판별 문제가 P에 속함을 증명한 기념비적인 성과이지만, 이론적인 중요성에 비해 실제적인 활용도는 낮은 편이다. 이는 실행 속도가 다른 효율적인 알고리즘들에 비해 느리기 때문이며, 이 때문에 은하 알고리즘으로 분류되기도 한다. 예를 들어, 64비트 정도의 입력에 대해서는 베일리-PSW 소수 판별법이 결정적이면서도 훨씬 빠르다. 더 큰 입력에 대해서는 무조건적으로 정확한 ECPP나 APR 알고리즘이 AKS보다 훨씬 우수한 성능을 보인다. 특히 ECPP는 소수임을 증명하는 소수성 증명서(primality certificate)를 생성할 수 있어, 결과를 독립적으로 빠르게 검증할 수 있다는 장점도 가지고 있다.

8. 수상

(작성할 내용 없음 - 원본 소스에 '수상' 관련 정보가 없습니다.)

9. 개선 및 변형

AKS 알고리즘이 발표된 이후, 여러 연구자에 의해 계산 속도를 높이기 위한 다양한 변형과 개선이 이루어졌다. 초기 논문에서 제시된 알고리즘의 점근적 시간 복잡도는 \tilde{O}(\log(n)^{12})였으나, 이는 다소 느슨한 상한이었다. 만약 소피 제르맹 소수 분포에 대한 널리 받아들여지는 추측이 사실이라면, 시간 복잡도는 \tilde{O}(\log(n)^6)으로 개선될 수 있었다.

발견 후 몇 달 동안 헨드릭 렌스트라(2002), 칼 포머란스(2002), 페드로 베리즈베이티아(Pedro Berrizbeitia, 2002), 쳉치샹(Qi Cheng, 2003), 대니얼 번스타인(2003a/b), 렌스트라와 포머란스(2003) 등이 새로운 변형을 발표하며 계산 속도를 크게 향상시켰다. 이러한 다양한 변형들의 등장으로, 크랜들과 파파도풀로스(Crandall and Papadopoulos)는 2003년 논문에서 이들을 묶어 "AKS-class" 알고리즘이라고 지칭하기도 했다.

이러한 연구 결과들을 반영하여 "PRIMES is in P" 논문은 AKS 알고리즘과 그 증명 방식을 새롭게 업데이트했다. 기본적인 아이디어는 유지되었지만, 알고리즘의 핵심 단계 중 하나인 ''r'' 값을 선택하는 방식이 개선되었고, 증명 과정은 원분 다항식과 유한체 이론을 중심으로 더욱 체계적으로 구성되었다. 이 업데이트를 통해 시간 복잡도 상한은 \tilde{O}(\log(n)^{10.5})로 개선되었고, 이후 체 이론의 결과를 추가로 활용하여 \tilde{O}(\log(n)^{7.5})까지 줄어들었다.

2005년에는 포머란스와 렌스트라가 \tilde{O}(\log(n)^{6})의 연산만으로 실행되는 AKS 변형을 발표했다.[3] 이는 다시 한번 논문 업데이트로 이어졌다.[4] 한편, 아그라왈, 카얄, 삭세나(Agrawal, Kayal, Saxena)는 Agrawal의 추측이 참일 경우 \tilde{O}(\log(n)^{3}) 복잡도를 갖는 변형을 제안했지만, 포머란스와 렌스트라는 이 추측이 아마도 거짓일 것이라는 휴리스틱한 논증을 제시했다.

AKS 알고리즘의 전체 실행 시간은 주로 알고리즘의 5단계, 즉 조건을 만족하는 적절한 ''r'' 값을 찾는 과정에 의해 결정된다. 따라서 ''r'' 값의 상한을 줄이는 것이 시간 복잡도를 개선하는 핵심이다.


  • 체 이론을 이용하면 ''r''이 O(\log(n)^3)보다 작다는 것을 보일 수 있으며, 이를 통해 실제 알고리즘의 시간 복잡도는 \tilde{O}(\log(n)^{7.5})임을 알 수 있다.


아직 증명되지 않은 몇 가지 가설을 가정하면, ''r'' 값의 상한을 더욱 줄일 수 있다.

  • 아르틴 추측을 가정하면 r = O(\log(n)^2)이다.
  • 소피 제르맹 소수의 밀도에 관한 추측이 옳다면 r = \tilde{O}(\log(n)^2)이다.

이 가설들은 만약 리만 가설이 참이라면 증명될 수 있다. 많은 수학자들이 리만 가설을 옳다고 믿고 있기 때문에, AKS 소수 판별법의 시간 복잡도는 \tilde{O}(\log(n)^6)일 가능성이 높다고 여겨진다.

10. 미해결 문제 및 추측

AKS 알고리즘의 시간 복잡도를 현재 알려진 \tilde{O}(\log(n)^{6})보다 더 개선할 수 있는지 여부는 아직 해결되지 않은 문제이다.[3][4] 알고리즘 실행 시간의 주요 부분은 5단계에서 결정되는 r의 크기에 따라 결정되는데, 이 r 값을 더 작게 한정할 수 있다면 시간 복잡도를 개선할 수 있다.

몇 가지 증명되지 않은 수론의 가설(추측)들이 AKS 알고리즘의 시간 복잡도와 관련되어 있다. 만약 이 가설들이 참으로 증명된다면, r의 상한을 낮추어 알고리즘의 효율성을 높일 수 있다.


  • 아그라왈의 추측(Agrawal's conjecture): 아그라왈, 카얄, 삭세나는 이 추측이 참일 경우 알고리즘이 \tilde{O}(\log(n)^{3}) 시간에 실행될 수 있는 변형을 제안했다. 그러나 포머란스와 렌스트라는 이 추측이 아마도 거짓일 것이라는 휴리스틱한 논증을 제시했다.[4]
  • 소피 제르맹 소수 밀도 추측: 이 추측이 참이라면, r\tilde{O}(\log(n)^2)로 추정된다.
  • 아르틴 추측: 이 추측이 참이라면 rO(\log(n)^2)로 추정된다.


소피 제르맹 소수 밀도 추측과 아르틴 추측은 리만 가설이 참이라면 증명될 수 있다. 많은 수학자들이 리만 가설이 참일 것으로 믿고 있기 때문에, rO(\log(n)^2) 수준이고 따라서 AKS 알고리즘의 시간 복잡도가 실제로 \tilde{O}(\log(n)^6)일 가능성이 높다고 여겨진다. 하지만 이 추측들은 아직 증명되지 않았으며, 따라서 AKS 알고리즘의 최적 시간 복잡도는 여전히 미해결 문제이다.

참조

[1] 논문 PRIMES is in P http://www.cse.iitk.[...]
[2] 논문 It is easy to determine whether a given integer is prime https://www.ams.org/[...]
[3] 간행물 Primality testing with Gaussian periods http://www.math.dart[...] 2005-07-20
[4] 간행물 Primality testing with Gaussian periods http://www.math.dart[...] 2011-04-12
[5] 간행물 Proving Primality After Agrawal-Kayal-Saxena https://cr.yp.to/pap[...] 2003-01-25
[6] 문서 See AKS Talk page for a discussion on why 'Example 2: n is not Prime past Step 4' is missing.
[7] 저널 PRIMES is in P http://www.cse.iitk.[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com